iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0
自我挑戰組

JavaScript 奇奇怪怪的核心觀念系列 第 4

(Day4) 陳述式 /表達式

  • 分享至 

  • xImage
  •  

前言

JavaScript 的語句分成兩種 陳述式、表達式,這兩種語法區分並不困難,接下來會一一介紹,比較特別的是函示也會分為兩種: 函示陳述式、 函示表達式 ,這兩種函示在『提升』特性上會有所差別,最後也會介紹到。

陳述式 (Statement)

陳述式的特色是執行程式碼操作,但『不會回傳任何值』。

常見的陳述式有:

這時想必就會有人想問,我們在瀏覽器建立任意變數時,他都會回傳 undefined,那麼為什麼建立變數不是表達式?

這是因為瀏覽器在建立變數時,會需要替變數製作一個記憶體空間,而回傳的這個 undefined 則是告訴使用者已經為這個變數,建立好對應的記憶空間,而非真正的回傳一個值。
Untitled

表達式 (Expreesion)

又稱運算式,執行表達式時,表達式會『回傳值』

MDN 同樣也有提到表達式的種類:https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Guide/Expressions_and_Operators#運算式

在上面有提到在瀏覽器建立變數時, 會回傳 undefined ,這點其實在其他『陳述式』上也會發生,例如

function test(){
}

if(true){
}

for(var i; i<10 ; i++){}

上述陳述式在執行時都會回傳 undefined
undefined2
但是這些都不是真正的回傳值,而是跟變數一樣,是瀏覽器告訴使用者,已經為了這段程式碼建立好對應記憶體空間,而真正的表達式則是一定會回傳『值』,例如:

1 + 1
array = [1,2,3]
array ===  true

Untitled

函示陳述式

函示根據建立方法分成:函示陳述式、函示表達式 兩種。
函示陳述式就是我們常使用的 function xxx() 由於這種函示帶有自己的名稱,因此又被稱做具名函示,例如:

function test(){
console.log("函示陳述式、又稱具名函示")
}

函示表達式

函式表達式會使用一個變數搭配等號運算子,以及一個函示。

var test = function(){
console.log("函示表達式、又稱匿名函示")
}

兩者主要差別在之前提到的『提升』不同,函示陳述式因為提升效果關係,呼叫函示的 xx() 可以在函示上方

test1() //函示陳述式、又稱具名函示
function test1(){
	console.log("函示陳述式、又稱具名函示")
}

而函示表達式則不行,根據提升效果 變數 雖然會在創造階段被創造出來,但實際上他是沒有值的狀態,因此將 呼叫函示的 xx() 擺在函示表達式上方,是會跳出錯誤訊息。

test2() //test2 is not a function
var test2 = function(){
console.log("函示表達式、又稱匿名函示")
}

參考文獻


上一篇
(Day3) 執行緒與同步&非同步
下一篇
(Day5) 原始型別及物件型別
系列文
JavaScript 奇奇怪怪的核心觀念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言